home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 1998 August / PC Plus SuperCD 50a Issue 142 (CD142a) (August 1998).iso / trial / demon / TURNPIKE.1 / CLASSES.ZIP / JAVA / UTIL / Properties.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-04-14  |  3.3 KB  |  260 lines

  1. package java.util;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.OutputStream;
  6. import java.io.PrintStream;
  7.  
  8. public class Properties extends Hashtable {
  9.    protected Properties defaults;
  10.  
  11.    public Properties() {
  12.       this((Properties)null);
  13.    }
  14.  
  15.    public Properties(Properties var1) {
  16.       this.defaults = var1;
  17.    }
  18.  
  19.    public synchronized void load(InputStream var1) throws IOException {
  20.       var1 = Runtime.currentRuntime.getLocalizedInputStream(var1);
  21.       int var2 = var1.read();
  22.  
  23.       label142:
  24.       while(true) {
  25.          StringBuffer var3;
  26.          switch (var2) {
  27.             case -1:
  28.                return;
  29.             case 9:
  30.             case 10:
  31.             case 13:
  32.             case 32:
  33.                var2 = var1.read();
  34.                continue;
  35.             case 33:
  36.             case 35:
  37.                while(true) {
  38.                   var2 = var1.read();
  39.                   if (var2 < 0 || var2 == 10 || var2 == 13) {
  40.                      continue label142;
  41.                   }
  42.                }
  43.             default:
  44.                var3 = new StringBuffer();
  45.          }
  46.  
  47.          while(var2 >= 0 && var2 != 61 && var2 != 58 && var2 != 32 && var2 != 9 && var2 != 10 && var2 != 13) {
  48.             var3.append((char)var2);
  49.             var2 = var1.read();
  50.          }
  51.  
  52.          while(var2 == 32 && var2 == 9) {
  53.             var2 = var1.read();
  54.          }
  55.  
  56.          if (var2 == 61 || var2 == 58) {
  57.             var2 = var1.read();
  58.          }
  59.  
  60.          while(var2 == 32 && var2 == 9) {
  61.             var2 = var1.read();
  62.          }
  63.  
  64.          StringBuffer var4 = new StringBuffer();
  65.  
  66.          label102:
  67.          while(var2 >= 0 && var2 != 10 && var2 != 13) {
  68.             if (var2 == 92) {
  69.                switch (var2 = var1.read()) {
  70.                   case 13:
  71.                      if ((var2 = var1.read()) != 10 && var2 != 32 && var2 != 9) {
  72.                         continue;
  73.                      }
  74.                   case 10:
  75.                      while(true) {
  76.                         while((var2 = var1.read()) == 32) {
  77.                         }
  78.  
  79.                         if (var2 != 9) {
  80.                            continue label102;
  81.                         }
  82.                      }
  83.                   case 110:
  84.                      var2 = 10;
  85.                      break;
  86.                   case 114:
  87.                      var2 = 13;
  88.                      break;
  89.                   case 116:
  90.                      var2 = 9;
  91.                      break;
  92.                   case 117:
  93.                      while((var2 = var1.read()) == 117) {
  94.                      }
  95.  
  96.                      int var5 = 0;
  97.  
  98.                      label89:
  99.                      for(int var6 = 0; var6 < 4; var2 = var1.read()) {
  100.                         switch (var2) {
  101.                            case 48:
  102.                            case 49:
  103.                            case 50:
  104.                            case 51:
  105.                            case 52:
  106.                            case 53:
  107.                            case 54:
  108.                            case 55:
  109.                            case 56:
  110.                            case 57:
  111.                               var5 = (var5 << 4) + var2 - 48;
  112.                               break;
  113.                            case 65:
  114.                            case 66:
  115.                            case 67:
  116.                            case 68:
  117.                            case 69:
  118.                            case 70:
  119.                               var5 = (var5 << 4) + 10 + var2 - 65;
  120.                               break;
  121.                            case 97:
  122.                            case 98:
  123.                            case 99:
  124.                            case 100:
  125.                            case 101:
  126.                            case 102:
  127.                               var5 = (var5 << 4) + 10 + var2 - 97;
  128.                               break;
  129.                            default:
  130.                               break label89;
  131.                         }
  132.  
  133.                         ++var6;
  134.                      }
  135.  
  136.                      var2 = var5;
  137.                }
  138.             }
  139.  
  140.             var4.append((char)var2);
  141.             var2 = var1.read();
  142.          }
  143.  
  144.          ((Hashtable)this).put(new String(var3), new String(var4));
  145.       }
  146.    }
  147.  
  148.    public synchronized void save(OutputStream var1, String var2) {
  149.       OutputStream var3 = Runtime.currentRuntime.getLocalizedOutputStream(var1);
  150.       PrintStream var4 = new PrintStream(var3, false);
  151.       boolean var5 = var3 != var1;
  152.       if (var2 != null) {
  153.          var4.write(35);
  154.          var4.println(var2);
  155.       }
  156.  
  157.       var4.write(35);
  158.       var4.println(new Date());
  159.       Enumeration var6 = ((Hashtable)this).keys();
  160.  
  161.       while(var6.hasMoreElements()) {
  162.          String var7 = (String)var6.nextElement();
  163.          var4.print(var7);
  164.          var4.write(61);
  165.          String var8 = (String)((Hashtable)this).get(var7);
  166.          int var9 = var8.count;
  167.          boolean var10 = false;
  168.  
  169.          for(int var11 = 0; var11 < var9; ++var11) {
  170.             char var12 = var8.charAt(var11);
  171.             switch (var12) {
  172.                case '\t':
  173.                   var4.write(92);
  174.                   var4.write(116);
  175.                   break;
  176.                case '\n':
  177.                   var4.write(92);
  178.                   var4.write(110);
  179.                   break;
  180.                case '\r':
  181.                   var4.write(92);
  182.                   var4.write(114);
  183.                   break;
  184.                case '\\':
  185.                   var4.write(92);
  186.                   var4.write(92);
  187.                   break;
  188.                default:
  189.                   if (var12 < ' ' || var12 >= 127 || var10 && var12 == ' ') {
  190.                      if (var12 > 255 && var5) {
  191.                         var4.write(var12);
  192.                      } else {
  193.                         var4.write(92);
  194.                         var4.write(117);
  195.                         var4.write(var12 >> 12 & 15);
  196.                         var4.write(var12 >> 8 & 15);
  197.                         var4.write(var12 >> 4 & 15);
  198.                         var4.write(var12 & 15);
  199.                      }
  200.                   } else {
  201.                      var4.write(var12);
  202.                   }
  203.             }
  204.  
  205.             var10 = false;
  206.          }
  207.  
  208.          var4.write(10);
  209.       }
  210.  
  211.    }
  212.  
  213.    public String getProperty(String var1) {
  214.       String var2 = (String)super.get(var1);
  215.       return var2 == null && this.defaults != null ? this.defaults.getProperty(var1) : var2;
  216.    }
  217.  
  218.    public String getProperty(String var1, String var2) {
  219.       String var3 = this.getProperty(var1);
  220.       return var3 == null ? var2 : var3;
  221.    }
  222.  
  223.    public Enumeration propertyNames() {
  224.       Hashtable var1 = new Hashtable();
  225.       this.enumerate(var1);
  226.       return var1.keys();
  227.    }
  228.  
  229.    public void list(PrintStream var1) {
  230.       var1.println("-- listing properties --");
  231.       Hashtable var2 = new Hashtable();
  232.       this.enumerate(var2);
  233.  
  234.       String var4;
  235.       String var5;
  236.       for(Enumeration var3 = var2.keys(); var3.hasMoreElements(); var1.println(var4 + "=" + var5)) {
  237.          var4 = (String)var3.nextElement();
  238.          var5 = (String)var2.get(var4);
  239.          if (var5.count > 40) {
  240.             var5 = var5.substring(0, 37) + "...";
  241.          }
  242.       }
  243.  
  244.    }
  245.  
  246.    private synchronized void enumerate(Hashtable var1) {
  247.       if (this.defaults != null) {
  248.          this.defaults.enumerate(var1);
  249.       }
  250.  
  251.       Enumeration var2 = ((Hashtable)this).keys();
  252.  
  253.       while(var2.hasMoreElements()) {
  254.          String var3 = (String)var2.nextElement();
  255.          var1.put(var3, ((Hashtable)this).get(var3));
  256.       }
  257.  
  258.    }
  259. }
  260.